package org.jspresso.framework.model.descriptor;

import java.util.ArrayList;
import java.util.Collection;

import org.jspresso.framework.model.component.IComponent;
import org.jspresso.framework.model.descriptor.basic.AbstractComponentDescriptor;
import org.jspresso.framework.model.descriptor.basic.BasicComponentDescriptor;
import org.jspresso.framework.model.descriptor.basic.BasicReferencePropertyDescriptor;

public class BasicRepeaterModelDescriptor<E> extends BasicComponentDescriptor<E> {
  
 public BasicRepeaterModelDescriptor(IComponentDescriptor<?> ownerDescriptor, IComponentDescriptor<?> elementDescriptor, int repeaterSize) {
    setName(elementDescriptor.getComponentContract().getName());
    
    // Create all property descriptors
    Collection<BasicReferencePropertyDescriptor> descriptors = new ArrayList<BasicReferencePropertyDescriptor>();
    for(int i = 0; i < repeaterSize; i++) {
      BasicReferencePropertyDescriptor<IComponent> refDescriptor = new BasicReferencePropertyDescriptor<IComponent>();
      refDescriptor.setReferencedDescriptor((IComponentDescriptor<IComponent>) elementDescriptor);
      refDescriptor.setName("property"+i);
      descriptors.add(refDescriptor);
    }
    ((AbstractComponentDescriptor)this).setPropertyDescriptors(descriptors);
  }
}
